//package com.yznote.cloudesk.logs;
//
//import com.alibaba.fastjson.JSON;
//import com.yznote.cloudesk.common.pojo.YLogs;
//import com.yznote.cloudesk.config.FieldConfig;
//import lombok.extern.slf4j.Slf4j;
//import org.apache.rocketmq.client.exception.MQClientException;
//import org.apache.rocketmq.client.producer.DefaultMQProducer;
//import org.apache.rocketmq.client.producer.SendCallback;
//import org.apache.rocketmq.client.producer.SendResult;
//import org.apache.rocketmq.common.message.Message;
//import org.apache.rocketmq.remoting.common.RemotingHelper;
//import org.apache.rocketmq.remoting.exception.RemotingException;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Component;
//
//import javax.annotation.PostConstruct;
//import java.io.UnsupportedEncodingException;
//
////@Component
//@Slf4j
//public class RocketmqProducerTemplate {
//    @Autowired
//    FieldConfig fieldConfig1;
//
//    static DefaultMQProducer producer = new DefaultMQProducer("producer1"); //（1）
//    private static FieldConfig fieldConfig;
//
//    @PostConstruct
//    public void setNamesrvAddr(){
//        this.fieldConfig = fieldConfig1;
//    }
//    static{
//        // 初始化一个producer并设置Producer group name
//        // 设置NameServer地址
//        producer.setNamesrvAddr(fieldConfig.getROCKETMQADRR());
//        producer.setSendMsgTimeout(6000);
//        // 启动producer
//        try {
//            producer.start();
//        } catch (MQClientException e) {
//            log.error("Rocketmq failed to start");
//        }
//    }
//
//    /**
//     * 同步发送消息
//     * @param topic
//     * @param Tags
//     * @param sendMsg
//     */
//    public static void sendMsgSyn(String topic, String Tags, YLogs sendMsg) throws Exception {
//        // 创建一条消息，并指定topic、tag、body等信息，tag可以理解成标签，对消息进行再归类，RocketMQ可以在消费端对tag进行过滤
//        Message msg = new Message(topic,
//                Tags,
//                JSON.toJSONString(sendMsg).getBytes(RemotingHelper.DEFAULT_CHARSET) /* Message body */
//        );   //（3）
//        // 利用producer进行发送，并同步等待发送结果
//        SendResult sendResult = producer.send(msg);   //（4）
//        System.out.printf("%s%n", sendResult);
//    }
//
//    /**
//     * 异步发送消息
//     * @param topic
//     * @param Tags
//     * @param sendMsg
//     */
//    public static void sendMsgAsy(String topic,String Tags,Object sendMsg) throws Exception {
//        producer.setRetryTimesWhenSendAsyncFailed(0);
//        // 创建一条消息，并指定topic、tag、body等信息，tag可以理解成标签，对消息进行再归类，RocketMQ可以在消费端对tag进行过滤
//        Message msg = new Message(topic,
//                Tags,
//                JSON.toJSONString(sendMsg).getBytes(RemotingHelper.DEFAULT_CHARSET));
//        // 异步发送消息, 发送结果通过callback返回给客户端
//        producer.send(msg, new SendCallback() {
//            @Override
//            public void onSuccess(SendResult sendResult) {
//                System.out.printf("%-10d OK %n",
//                        sendResult.getMsgId());
//            }
//            @Override
//            public void onException(Throwable e) {
//                System.out.printf("%-10d Exception %n", e);
//                e.printStackTrace();
//            }
//        });
//    }
//}
